package servlets;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import domein.AutoTotaalDiensten;
import exceptions.PersoneelBezetException;

@WebServlet(name="MaakafspraakServlet", urlPatterns="/klant/MaakAfspraak.do")
public class AgendaAfspraakServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * Default constructor.
	 */
	public AgendaAfspraakServlet() {
		super(); 
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {	

		RequestDispatcher rd = null;
		rd = request.getRequestDispatcher("/klant/afspraak-maken.jsp");
 
		//parse String naar Calendar object met SimpleDateFormat
		SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy H:m");
		sdf.setLenient(false);
		Calendar datum = Calendar.getInstance(); 		
		try {
			datum.setTime(sdf.parse(request.getParameter("datum") + " " + request.getParameter("tijd")));	
			System.out.println(datum.toString());
		} catch (ParseException e) {
			request.setAttribute("error", "Foute datum ingevuld");
			rd.forward(request, response);
		}

		//zet aantal uren
		int uren = 0;
		switch(request.getParameter("type-afspraak")){
		case "apkkeuring":
			uren = 1;
			break;
		case "onderhoudsbeurt":
			uren = 2;
			break;
		default:
			uren = 1;
			break;
		}

		//bereken eind tijd
		Calendar eindTijd = datum;
		eindTijd.setTimeInMillis(datum.getTimeInMillis() + (3600000*uren)); //tel uren bij tijd op

		String omschrijving = request.getParameter("omschrijving");
		if(omschrijving.equals("")){			
			request.setAttribute("error", "Geen omschrijving ingevuld");
			rd.forward(request, response);

		}	

		Integer indexMonteur = Integer.parseInt(request.getParameter("monteur"));			
		//voeg afspraak toe aan agenda van monteur1
		try {
			AutoTotaalDiensten.getPersoneel((indexMonteur)).addAfspraak(datum, eindTijd, omschrijving);
			request.setAttribute("message", "Afspraak succesvol aangemaakt");
		} catch (PersoneelBezetException e) {
			request.setAttribute("message", "Monteur is bezet op dit tijdstip");
		}
		rd.forward(request, response);
	}
}